#pragma once
#include "common.hpp"

class server
{

public:
    server():_fd(defualtFd)
    {
        openPipeForRead(gForRead);
    }
    ~server()
    {
    }

    bool openPipeForRead(int flag)
    {
        _fd = ::open(gpipeFile.c_str(), flag);
        if (_fd < 0)
        {
            return false;
        }
        return true;
    }
    void closePipe()
    {
        if (_fd >= 0) ::close(_fd);
    }

    // zdl:: 现在先来说名一些编程技巧，现在哦我们传入的是指针额外就说明这个是
    // 说明这个是输出型参数！ 为& 则说明这个是输入型参数
    int RecPipe(std::string *out)
    {
        char buffer[gsize] = {0};
        ssize_t n = ::read(_fd, buffer, gsize - 1); 

        if (n > 0)
        {
            buffer[n] = 0;
            *out = buffer;
        }

        return n;
    }

private:
    int _fd;
};
